/***********************************************************************************************
 * File Name   :	windows_14_wizard_wifi.c
 * Programmer  : 	kmist
 * Start Date  : 	11/7/2020
 * Last Update : 	11/8/2020
 *----------------------------------------------------------------------------------------------
 *Functions:
 *	    void win14_wizard_create(void)                  //窗口创建初始化
 *      void win14_wizard_destory(void)                 //窗口销毁
 *	    int win14_wizard_wifi_display(void)             //窗口显示
 *
 * Timer:
 *      os_timer_t time_wifi_connect;                   //wifi初始化超时定时器
 ***********************************************************************************************/
#include "user_extern.h"
static void win14_wizard_destory(void);


#define CONFIG_WIFI_OUTTIME 100
/* 无线初始化定时器 */
os_timer_t time_wifi_connect;
static uint16_t TWcnt = 0;
uint8_t OTtag = 0;
/*********************************************************************
 *  名称： time_wifi_connect_cb
 *  功能： 无线智能配网计时定时器
 *  参数： void
 *  返回值：void
 ********************************************************************/
static void time_wifi_connect_cb(void *args)
{
    TWcnt++;
    if (TWcnt >= CONFIG_WIFI_OUTTIME)
    {
        os_timer_disarm(&time_wifi_connect);
        /* 如果配网超时，就返回 */
        TWcnt = 0;
        OTtag = 1;
    }
}
/*********************************************************************
 *  名称： win14_wizard_create
 *  功能： 无线引导初始化界面创建准备动作
 *  参数： void
 *  返回值：void
 ********************************************************************/
void win14_wizard_create(void)
{
    wifi.init_sta();
    os_timer_disarm(&time_wifi_connect);
    os_timer_setfn(&time_wifi_connect, (os_timer_func_t *)time_wifi_connect_cb, 0);
    os_timer_arm(&time_wifi_connect, 1000, 1);
}

/*********************************************************************
 *  名称： win14_wizard_wifi_display
 *  功能： 引导界面无线显示接口
 *  参数： void
 *  返回值：void
 ********************************************************************/
uint8_t win14_wizard_wifi_display(void)
{
    uint8_t win_ret = WINDOWS_STATUS_DIS_ONLY;
    oled.show_string(32, 0, T(const_wizard_WIFI), STR_SIZE_32, 1);
    
    if (wifi.wifi_status != SYS_WIFI_STATUS_CONNECTED)
    {
        if (OTtag == 1)
        {
            win14_wizard_destory();
            win_ret = WINDOWS_STATUS_INIT;
        }

        ui.draw_progress(0, 4, TWcnt, CONFIG_WIFI_OUTTIME);
    }
    else
    {
        TWcnt = 0;
        win14_wizard_destory();
        ui.draw_progress(0, 4, 1, 1); /* 100% */
        mtime.msntp_init();
        win_ret = WINDOWS_STATUS_INIT;
    }
    return win_ret;
}

/*********************************************************************
 *  名称： win14_wizard_destory
 *  功能： 无线引导初始化界面销毁动作
 *  参数： void
 *  返回值：void
 ********************************************************************/
static void win14_wizard_destory(void)
{
    if (wifi.wifi_status == SYS_WIFI_STATUS_CONNECTED)
    {
        /* success */
        Dsystem.windows_cur_id = WIN_UI_DESKTOP;
        Dsystem.windows_sub_id = 0;
    }
    else
    {
        /* error */
        wifi.close_wifi();
        Dsystem.windows_cur_id = WIN_UI_OTHERMO;
        Dsystem.windows_sub_id = WIN_SUI_WIZARD_INIT;
    }
    os_timer_disarm(&time_wifi_connect);
    OTtag = 0;
    return;
}
